package executors.completable.future;

import java.util.concurrent.CompletableFuture;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.TimeUnit;

public class SyncMqFlushDiskDemo {
  
  private final static CompletableFuture<String> completableFuture = new CompletableFuture<>();
  
  public static void main(String[] args) throws ExecutionException, InterruptedException {
    // 使用一个线程来模拟 mq 刷盘的过程
    new Thread(() -> {
      try {
        // 使用睡眠的状态  模拟刷盘异步的过程
        for (int i = 0; i < 3; i++) {
          TimeUnit.SECONDS.sleep(1);
          System.out.println("刷盘中 ...");
        }
        
        completableFuture.complete("ok");
      } catch (InterruptedException e) {
        throw new RuntimeException(e);
      }
    }).start();
    
    // 这是同步的过程等待返回
    // 这个get方法 是有阻塞的作用
    String result = completableFuture.get();
    System.out.println("刷盘结果: " + result);
  }
}
